2010/08/17


ZimbuVimの作者であるBram Moolenaar氏が開発しているプログラミング言語「Zimbu」を触ってみた。
the Zimbu programming language

Suppose you want to write a new program, something like a text editor. What language would you write it in?

  • It has to be as fast as possible, so interpreted languages are out.
  • You don't want to micro manage memory, so C is out.
  • You don't want to require programmers to have a degree, so C++ is out.
  • You want fast startup and not depend on a big runtime, so Java is out.
  • It has to run on most systems, anything with a C compiler, so D is out.
  • You want to have fun making something new.

No existing language really meets these demands, so let's create a new one that does!

Zimbu is an experimental programming language. It is a very practical, no-nonsense kind of language. It mixes the good things of many existing languages and avoids their deficiencies. And then throws in a few brand new ideas.

http://www.zimbu.org/
実は、存在は出た当初から知ってはいたんだけど
制御命令が全部大文字とか、流行らないよね
とか
ソースコード中にタブがあるとビルド出来ないとか、どんだけ?
とか
ブロックが「{」無しに始まるのに終わりに「}」が要るの気持ち悪いよね
とか、おもいっきりkazuh●さんあたりにDISられそうだったので、触って無かった。
これではいかんな!と思ってFizzBuzz書いてみた。
FUNC int MAIN()
  FOR i IN 1 TO 100
    IF i % 15 == 0
      IO.write("FizzBuzz\n")
    ELSEIF i % 3 == 0
      IO.write("Fizz\n")
    ELSEIF i % 5 == 0
      IO.write("Buzz\n")
    ELSE
      IO.write(i)
      IO.write("\n")
    }
  }
  RETURN 0
}
「}」だけとか、きもちわる!

zimbuではzuファイルを一度Cのコードに変換し、コンパイラでビルドします。なので実行速度は結構速い(かもしれない)。ちなみにC言語に出力されたコードは、804行もあってブログに載せられないので、Gistに貼り付けておいた。
たかだか15行のソースなのに804行も出力するなんて凄い!

ただ思いとは裏腹に、実は結構色んな事が出来る予定の様で、GUIの設計なんかもやってるみたいです。ちなみにGTK/Qtのバインディングは構想中ですが、ブラウザを使ったGUIコードの生成はある程度動く様です。
zwt-demo1
zwt-demo2
なお、このサンプルで使われている部品の一つとしてGoogle Protocol Bufferを使っており、javaのソースを吐いてエンティティオブジェクトとして扱っている様です。

なんか凄いような、凄くないような...

明日にはきっと言語仕様忘れてると思います。
Posted at by